"""
python内建了map()和reduce()函数

map(fn, lsd)
参数：
    fn：是一个函数
    lsd：集合
功能：将传输的函数fn依次作用到lsd集合中的每个元素，并把结果作为新的Iterator返回
"""
# def chr2int(chr):
#     return {"0":0, "1":5, "2":2, "3":3, "4":4, "5":5, "6":6, "7":7, "8":8}[chr]
# ret = map(chr2int, "13586")
# print(ret)
# print(list(ret))

"""
ruduce(fn,lsd)
参数：
    fn：是一个函数
    lsd：集合
功能：传入的fn函数作用在lsd集合中，这个fn函数必须接受两个函数，reduce把结果继续和
序列的下一个元素做累积计算

reduce(f, [a, b, c, d])==f(f(f(a, b), c), d)

"""
#求一个序列的和
# from functools import reduce
# def func(x, y):
#     return x + y
# res = reduce(func, [1, 2, 3, 4])
# print(res)

#reduce配和map实现str->int
from functools import reduce
def str2int(s):
    def chr2int(chr):
        return {"0": 0, "1": 1, "2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7, "8": 8}[chr]
    def f(x, y):
        return x * 10 + y
    return reduce(f, map(chr2int, s))

a = str2int("1357")
print(a)
print(type(a))